'use client'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Badge } from '@/components/ui/badge'; import Database from 'lucide-react/dist/esm/icons/database'; import ArrowLeft from 'lucide-react/dist/esm/icons/arrow-left'; import Plus from 'lucide-react/dist/esm/icons/plus'; import Edit from 'lucide-react/dist/esm/icons/edit'; import Trash from 'lucide-react/dist/esm/icons/trash'; import Save from 'lucide-react/dist/esm/icons/save'; import CheckCircle from 'lucide-react/dist/esm/icons/check-circle'; import Zap from 'lucide-react/dist/esm/icons/zap'; import Code from 'lucide-react/dist/esm/icons/code'; import Info from 'lucide-react/dist/esm/icons/info'; import Link from 'next/link'; import { useState } from 'react'; import { useUsers, useCreateUser, useUpdateUser, useDeleteUser } from '@/hooks/useDatabaseOperations'; import type { User } from '@/generated/prisma/client'; export default function TestORMPage() { const [userForm, setUserForm] = useState({ name: '', email: '' }); const [editingUser, setEditingUser] = useState(null); // Users hooks const { data: users, isLoading: usersLoading } = useUsers(); const createUser = useCreateUser(); const updateUser = useUpdateUser(); const deleteUser = useDeleteUser(); const handleCreateUser = async (e: React.FormEvent) => { e.preventDefault(); try { await createUser.mutateAsync(userForm); setUserForm({ name: '', email: '' }); } catch (error) { console.error('Error creating user:', error); } }; const handleUpdateUser = async (e: React.FormEvent) => { e.preventDefault(); if (!editingUser) return; try { await updateUser.mutateAsync({ id: editingUser.id, data: userForm }); setEditingUser(null); setUserForm({ name: '', email: '' }); } catch (error) { console.error('Error updating user:', error); } }; const handleDeleteUser = async (id: number) => { try { await deleteUser.mutateAsync(id); } catch (error) { console.error('Error deleting user:', error); } }; return (
{/* Hero Section */}
{/* Header Navigation */}
Prisma ORM
{/* Hero Content */}

Prisma ORM Testing

Test database operations with Prisma ORM. Create, read, update, and delete users with powerful database toolkit and introspection.

Feature-rich Introspection
{/* Spacer */}
{/* Main Content */}
{/* Left Column - Setup Instructions */}
{/* Setup Status */}

Prisma Active

Database operations ready

Type-safe queries
Database introspection
Migration support
{/* Setup Instructions */} Setup Instructions Prisma Follow these steps to configure Prisma ORM
{/* Step 1 */}
1

Environment Setup

cp .env.example .env.local

Add your database connection string

{/* Step 3 */}
2

Generate Client

npx prisma generate

Generate Prisma client from schema

{/* Step 4 */}
3

Run Migrations

npx prisma db push

Create tables in your database

Prisma Benefits

Prisma provides powerful database introspection, migrations, and excellent developer tooling with type safety.

{/* Right Column - User Management */}
{/* Create/Edit User Form */} {editingUser ? 'Edit User' : 'Create User'} {editingUser ? 'Update user information' : 'Add a new user to the database'}
setUserForm({ ...userForm, name: e.target.value })} placeholder="Enter user name" required />
setUserForm({ ...userForm, email: e.target.value })} placeholder="Enter email address" required />
{editingUser && ( )}
{/* Users List */} Users ({users?.length || 0}) Prisma ORM Manage users in the database {usersLoading ? (

Loading users...

) : users && users.length > 0 ? (
{users.map((user) => (
{user.name.charAt(0).toUpperCase()}

{user.name}

{user.email}

Created: {new Date(user.createdAt).toLocaleDateString()}

))}
) : (

No users found

Create your first user to get started with database operations

)}
{/* Features Section */}

Type Safety

Full TypeScript support with auto-generated types from your database schema

Introspection

Powerful database introspection with automatic schema generation and migration support

Developer Tools

Excellent developer experience with Prisma Studio, migrations, and comprehensive tooling

); }